//OrderTest.java
package com.ylaihui.oop11;

abstract class Order{
	public abstract void show();
}

public class OrderTest {
	
	public static void method(Order o){
		o.show();
	}
	public static void main(String[] args) {
		
		// Cannot instantiate the type Order
//		Order o = new Order();
		
		// Order o = new Order(){};  -- {} 中 提供 抽象类 Order 需要重写的方法
		//创建了一匿名子类的对象：p
		Order o = new Order(){
			@Override
			public void show() {
				System.out.println("this is book order.");
			}
		};
		
		// 多态， 形参是 Order类型，实参是 Order类的子类对象， Order类的子类是匿名的，对象名是 o
		method(o);
		//-----------------------------------------
		//创建匿名子类的匿名对象
		//method(new Order());  // Cannot instantiate the type Order
		//method(new Order(){}); // {} 中提供需要重写的方法  
		method(new Order(){
			@Override
			public void show() {
				System.out.println("this is computer order.");
			}
		});
	}
}
